package com.atguigu.gulimall.gateway;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * 1 开启服务注册发现
 *      1）、网关也需要将自身添加到注册中心中，才能发现其他服务，所以也要添加nacos的server-addr 添加nacos地址，还有application-name 应用名，注册到微服务中的名字
 *          @EnableDiscoveryClient
 *          由于引入的是common中的依赖，其中有mybatis相关操作，需要数据源相关配置，所以需要在引入common依赖时排除mybatis相关的内容，或者在入口类的@SpringBootApplication后添加
 *          (exclude = {DataSourceAutoConfiguration.class})
 *          意思是排除数据源相关的自动配置
 *      2）、为网管设置端口号，此处为88（为了规范方便，默认也可以）
 *          server.port=88，使用了Netty而非tomcat，拥有更好的网络性能
 * 2 配置路由，此处在application。yml，应该也可以在properties中
 *      spring:
 *          cloud:
 *              gateway:
 *                  routes://路由规则，其中是数组格式，在yml中为-
 *                      - id：test1//路由id ，唯一不可重复，用来识别到底是哪一个路由，名字自定义即可，此处为test1
 *                        uri：https:https://www.baidu.com 需要去的地址，此处为百度
 *                        predicates：//断言，什么时候去uri中的地址，需要一个断言规则，断言也是数组，在yml中为-  更多的断言规则网上可以查找，比如spring cloud的官方
 *                          - Query=url,baidu //希望有一个叫url的键，它的值是百度
 *                      - id： test2
 *                         uri：https://qq.com
 *                         predicas：
 *                          - Query=url,qq
 *    这个路由规则就是，如果携带了一个叫url的值，这个值是qq就去https://qq.com 是baidu 就去https://www.baidu.com
 *    需要注意 假设地址栏为 http://localhost:88/hello?url=qq 他最终会访问 www.qq.com/hello 这个网址 此处88为网管端口号
 * */
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@EnableDiscoveryClient
public class GulimallGatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallGatewayApplication.class, args);
    }

}
